package interviewQuestions;

import java.util.Scanner;

/**
 * 最小包含子串长度
 * 【题目】
 *
 * 　　给定字符串str1和str2，求str1的子串中含有str2所有字符的最小子串长度。
 *
 * 【举例】
 *
 * 　　str1 = “aabcde”, str2 = “ca”。返回3.
 * 　　str1 = “12345”, str2 = “344”。返回0.
 *
 *
 * */
public class MinSubStringlen {

    public static boolean solve(String s1, String s2){
        int[] map = new int[256]; // ASCII中只有256个字符
        char[] c1 = s1.toCharArray();
        char[] c2 = s2.toCharArray();

        for (int i = 0; i < c2.length; i++) {
            map[c2[i]]++; // 将对应的c2加入到map中
        }
        for (int i = 0; i < c1.length; i++) {
            map[c1[i]]--;
        }

        for (int i = 0; i < 256; i++) {
            if(map[i]>0){ // 如果map中还有元素大于0  说明str1中有不包含str的字符
                return false;
            }
        }

        return true;


    }

    public static void main(String[] args) throws InterruptedException {
        Scanner input = new Scanner(System.in);
        String str1 = input.nextLine();
        String str2 = input.next();
        int len1 = str1.length();
        int len2 = str2.length();
        int i = 0, j = 0;
        while(i <= len1-1){

            // 找到跟小串开头字符相同的位置
            if(str1.charAt(i) == str2.charAt(0)){
                break;
            }
            i++;

        }

        while(j <= len1-1){

            // 找到跟小串结尾字符相同的位置
            if(str1.charAt(j) == str2.charAt(len2-1)){
                break;
            }
            j++;

        }

        int rs = j-i+1;// 子串的长度
        String subStr = str1.substring(i,j+1);
        if(!solve(subStr,str2)){ // 判断子串中是否包含str2子串
            rs= 0;
        }

        System.out.println(rs);
    }
}
